#include<bits/stdc++.h>
using namespace std;
int b1[100001][2];
bool b2[100001],b3[10001][10001];
int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    int t;
    cin>>t;
    for(int q=1;q<=t;q++)
    {
        memset(b1,0,sizeof(b1));
        memset(b2,1,sizeof(b2));
        memset(b3,0,sizeof(b3));
        int n,m,l,v,ans=0;cin>>n>>m>>l>>v;
        int a[n+1][4],b[m+1];
        for(int i=1;i<=n;i++) cin>>a[i][1]>>a[i][2]>>a[i][3];
        for(int i=1;i<=m;i++) cin>>b[i];
        for(int i=1;i<=n;i++)
        {
            if(a[i][3]<0)
            {
                if(a[i][2]<=v)
                {
                    b1[i][0]=-1;b1[i][1]=-1;
                }
                else
                {
                    b1[i][1]=a[i][1];b1[i][0]=(v*v-a[i][2]*a[i][2])/(2*a[i][3])+a[i][1];
                }
            }
            else if(a[i][3]==0)
            {
                if(a[i][2]<=v)
                {
                    b1[i][0]=-1;b1[i][1]=-1;
                }
                else
                {
                    b1[i][0]=a[i][1];b1[i][1]=l;
                }
            }
            else
            {
                if(a[i][2]>v)
                {
                    b1[i][0]=a[i][2];b1[i][1]=l;
                }
                else
                {
                    b1[i][0]=(v*v-a[i][2]*a[i][2])/(2*a[i][3])+a[i][1];b1[i][1]=l;
                }
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(min(b1[i][0],b1[i][1])<=b[j]&&max(b1[i][0],b1[i][1])>=b[j])
                {
                    b3[i][j]=1;
                    if(b2[i])
                    {
                        b2[i]=0;
                        ans++;
                    }
                }
            }
        }
        cout<<ans<<' ';
        ans=0;bool g[10001];int h=0,ans2=1;
        memset(g,1,sizeof(g));
        for(int i=1;i<=m;i++)
        {
            int ans1=0;
            for(int j=1;j<=n;j++) ans1+=b3[j][i];
            if(ans1>ans)
            {
                ans=ans1;
                h=i;
            }
        }
        for(int i=1;i<=n;i++)
        {
            if(b3[i][h]==1) g[i]=0;
        }
        while(1)
        {
            ans=0;int h=0;
            for(int i=1;i<=m;i++)
            {
                int ans1=0;
                for(int j=1;j<=n;j++) if(g[j])ans1+=b3[j][i];
                if(ans1>ans)
                {
                    ans=ans1;
                    h=i;
                }
                for(int i=1;i<=n;i++)
                {
                    if(b3[i][h]==1) g[i]=0;
                }
            }
            if(h==0) break;
            ans2++;
        }
        cout<<m-ans2<<endl;
    }
    return 0;
}
